// campus preferences GUI definition

#define ChangeAnonymousHome EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cCAH')
}

#define ChangeAnonymousIncoming EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cCAI')
}

#define ChangeRootHome EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cCRH')
}

#define ChangeLog EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cCLF')
}

#define OKButtonEvent EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cOKW')
}

#define CancelButtonEvent EventRoute
{
	Event 'fBUT',
	TargetName "campus preferences",
	MessageFilter WhatFilter( What 'cCNL')
}

// Tab General
#define TabGeneral TabItem
{
	Text "General",
	Child HorizontalGroup
	{
		Child VerticalGroup
		{
			Child Frame
			{
				Text "Parse modes",
				Child HorizontalGroup
				{
					Child CheckBox( Name PedanticMode, Text "Pedantic mode"),
					Child CheckBox( Name WarningMode, Text "Warning mode")
				}
			},
			Child VerticalSpace(),
			Child Frame
			{
				Text "Network",
				Child VerticalListView
				{
					VerticalWeight 0,
					Transparent true,
					Columns 3,
					ColumnWeight 0 0,
					ColumnWeight 1 0,
					Child RowGroup
					{
						Child String( Text "Full hostname:", HorizontalAlignment 2, VerticalAlignment 1),
						Child HorizontalSpace(),
						Child TextInput( Name HostName, Text "", AcceptCharacters "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW.-123456789", MinimumWidthText "123456789012345678901234567890")
					},
					Child RowGroup
					{
						Child String( Text "Port:", HorizontalAlignment 2, VerticalAlignment 1),
						Child HorizontalSpace(),
						Child TextInput( Name Port, Text "", AcceptCharacters "1234567890", MinimumWidthText "1234567890")
					},
					Child RowGroup
					{
						Child String( Text "Max. Connections:", HorizontalAlignment 2, VerticalAlignment 1),
						Child HorizontalSpace(),
						Child TextInput( Name MaxConnections, Text "", AcceptCharacters "1234567890", MinimumWidthText "1234567890")
					},
					Child RowGroup
					{
						Child String( Text "Idletime:", HorizontalAlignment 2, VerticalAlignment 1),
						Child HorizontalSpace(),
						Child TextInput( Name IdleTime, Text "", AcceptCharacters "1234567890", MinimumWidthText "1234567890")
					}
				}
			},
			Child VerticalSpace,
			Child Frame
			{
				Text "Logging",
				Child VerticalGroup
				{
					Child VerticalListView
					{
						VerticalWeight 0,
						Transparent true,
						Columns 2,
						ColumnWeight 0 0,
						Child RowGroup
						{
							Child Button( Text "Logfile:", EventRoute ChangeLog),
							Child TextInput( Name LogFile, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
						},
						Child RowGroup
						{
						Child String( Text "Loglevel:", Weights 0, HorizontalAlignment 1, VerticalAlignment 1),
						Child TextInput( Name LogLevel, Text "", MinimumWidthText "12345", AcceptCharacters "1234567890", VerticalAlignment 1)
						}
					},
					Child VerticalSpace,
					Child CheckBox( Name ResolveHostname, Text "Resolve hostnames for logfile"),
				}
			}
		}
	}
}

// Tab Anonymous
#define TabAnonymous TabItem
{
	Text Anonymous,
	Child VerticalGroup
	{
		Child Frame
		{
			Text Directories,
			Child VerticalGroup
			{
				Child VerticalListView
				{
					VerticalWeight 0,
					Transparent true,
					Columns 2,
					ColumnWeight 0 0,
					Child RowGroup
					{
						Child Button( Text "Home:", EventRoute ChangeAnonymousHome),
						Child TextInput( Name AnonymousHomeDir, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					},
					Child RowGroup
					{
						Child Button( Text "Incoming:", EventRoute ChangeAnonymousIncoming),
						Child TextInput( Name AnonymousIncomingDir, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					}
				}
			}
		},
		Child Frame
		{
			Text Misc,
			Child VerticalGroup
			{
				Child VerticalListView
				{
					VerticalWeight 0,
					Transparent true,
					Columns 2,
					ColumnWeight 0 0,
					Child RowGroup
					{
						Child String( Text "Alias:", HorizontalAlignment 2, VerticalAlignment 1),
						Child TextInput( Name AnonymousAlias, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					},
					Child RowGroup
					{
						Child String( Text "Userlimit:", HorizontalAlignment 2, VerticalAlignment 1),
						Child TextInput( Name AnonymousUserLimit, Text "", AcceptCharacters "1234567890", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					}
				},
				Child VerticalSpace,
				Child CheckBox( Name AllowIncomingList, Text "Allow listing of incoming directory"),
				Child VerticalSpace,
				Child CheckBox( Name AllowIncomingMkdir, Text "Allow creation of subdirectories in incoming")
			}
		}
	}
}

// Tab Administrator
#define TabAdministrator TabItem
{
	Text Administrator,
	Child VerticalGroup
	{
		Child Frame
		{
			Text Directories,
			Child VerticalGroup
			{
				Child VerticalListView
				{
					VerticalWeight 0,
					Transparent true,
					Columns 2,
					ColumnWeight 0 0,
					Child RowGroup
					{
						Child Button( Text "Home:", EventRoute ChangeRootHome),
						Child TextInput( Name RootHomeDir, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					}
				}
			}
		},
		Child Frame
		{
			Text Misc,
			Child VerticalGroup
			{
				Child VerticalListView
				{
					VerticalWeight 0,
					Transparent true,
					Columns 2,
					ColumnWeight 0 0,
					Child RowGroup
					{
						Child String( Text "Password:", HorizontalAlignment 2, VerticalAlignment 1),
						Child TextInput( Name RootPassword, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					},
					Child RowGroup
					{
						Child String( Text "Alias:", HorizontalAlignment 2, VerticalAlignment 1),
						Child TextInput( Name RootAlias, Text "", MinimumWidthText "12345678901234567890", VerticalAlignment 1)
					}
				}
			}
		}
	}
}

// Tab group
#define Tabs TabGroup
{
	Child TabGeneral,
	Child TabAnonymous,
	Child TabAdministrator
}

// This one is the main group which connects everything.
#define MainGroup VerticalGroup
{
	Child HorizontalGroup
	{
		Child Tabs
	},
	Child HorizontalGroup
	{
		VerticalWeight 0,
		Child Button( Text Cancel, VerticalWeight 0, VerticalAlignment 1, EventRoute CancelButtonEvent),
		Child VerticalSpace(),
		Child Button( Text OK, VerticalWeight 0, VerticalAlignment 1, EventRoute OKButtonEvent)
	}
}

// This is the window as a framework around everything.

#define Main Window
{
	Title "campus preferences", Object MainGroup,
	MoveTo 100 100
}
